package com.itdct.mto.core.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.List;

import lombok.Data;

/**
 * @author Zhouwx
 * @date 2025/7/2 10:03:22
 * @version 1.0
 * @description
 */
@Data
@Component
@ConfigurationProperties(prefix = "mto")
public class MtoConfig {
    /**
     * OpenGauss数据库模式，A类：PostgreSQL模式；B类：MySQL模式
     */
    private String databaseMode = "A";
    /**
     * 转换表的时候是否会先删除表
     */
    private boolean dropTable = false;

    /**
     * 传输数据时是否清空表
     */
    private boolean truncateTable = false;

    /**
     * 是否自动运行
     */
    private boolean autoRun = true;

    /**
     * 转换表和查询表的线程数
     */
    private int threadCount = 8;

    /**
     * 每批查询条数
     */
    private int batchSize = 1000;

    /**
     * 过滤的表名
     */
    private List<String> filterTableNames;

    /**
     * 指定表名
     */
    private List<String> specificTableNames;

    /**
     * 如果该字段不能为空，但是赋的值是空字符串，到了OpenGauss后，就会报错，所以这里设置一个默认值
     */
    private String defaultEmptyNotNullColumnValue = "Unknown";

    /**
     * 数据传输监控表迁移输出时间间隔，单位：毫秒
     */
    private long transferMonitorInterval = 30000;

    /**
     * 是否为MySQL传输到MySQL
     */
    private boolean mysqlToMysql = false;
}
